package com.biblioteca.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.PreparedStatement;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.biblioteca.model.entities.Obra;


@SuppressWarnings("serial")
public class FrameAlteraObra extends JFrame {

	private FramePrincipal fp;
	private Obra o ;
	private int linha ;
	public JTextField tituloField;
	public JTextField autorField;
	public JTextField quantidadeField;
	public JComboBox categoriaBox;
	public JButton btnOk;

	private PreparedStatement pst ;
		
	
	public FrameAlteraObra(FramePrincipal framePrincipal,Obra obra) {

		fp = framePrincipal;
		this.o = obra ;
		
		setSize(800 / 2, 600 / 2);
		setResizable(false);
		setLocationRelativeTo(fp);
		setTitle("Adicionar Obra");
		getContentPane().setLayout(null);

		JPanel panel = new JPanel();
		panel.setBounds(0, 0, 394, 272);
		getContentPane().add(panel);
		panel.setLayout(null);

		JLabel tituloLabel = new JLabel("T\u00EDtulo");
		tituloLabel.setBounds(41, 23, 71, 14);
		panel.add(tituloLabel);

		tituloField = new JTextField();
		tituloField.setBounds(112, 20, 220, 20);
		panel.add(tituloField);
		tituloField.setColumns(10);
		tituloField.setText(o.getTitulo());
		
		autorField = new JTextField();
		autorField.setBounds(112, 63, 220, 20);
		panel.add(autorField);
		autorField.setColumns(10);
		autorField.setText(o.getAutor());
		
		JLabel autorLabel = new JLabel("Autor");
		autorLabel.setBounds(41, 66, 71, 14);
		panel.add(autorLabel);

		categoriaBox = new JComboBox();
		categoriaBox.setModel(new DefaultComboBoxModel(new String[] { "Livro",
				"Peri\u00F3dico", "Enciclopedia", "M\u00EDdia",
				"Dicion\u00E1rio" }));
		categoriaBox.setBounds(112, 108, 220, 20);
		panel.add(categoriaBox);
		categoriaBox.setSelectedItem(o.getCategoria());
		
		quantidadeField = new JTextField();
		quantidadeField.setBounds(112, 151, 220, 20);
		panel.add(quantidadeField);
		quantidadeField.setColumns(10);
		quantidadeField.setText(Integer.toString(o.getQtdTotal()));

		JLabel lblQuantidade = new JLabel("Quantidade");
		lblQuantidade.setBounds(27, 154, 85, 14);
		panel.add(lblQuantidade);

		btnOk = new JButton("OK");
		btnOk.setBounds(214, 197, 89, 23);
		panel.add(btnOk);

		setVisible(true);

		btnOk.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String t,a,c ;
				int q ;
				t = tituloField.getText().trim();
				if (!t.equals("")) {
					a = autorField.getText().trim();
					if (!a.equals("")) {
						c = categoriaBox.getSelectedItem().toString() ;
						String qTemp = quantidadeField.getText().trim() ;
						try {
							q = Integer.parseInt(qTemp);
							if (q<o.getQtdEmp()) throw new Exception() ; 
							pst = fp.conn.prepareStatement("UPDATE Obra SET titulo = ? ,autor = ? ,categoria = ? ,qtd_total = ? WHERE id = ?");
							pst.setString(1, t);
							pst.setString(2, a);
							pst.setString(3, c) ;
							pst.setInt(4, q) ;
							pst.setInt(5, o.getId());
							pst.execute();
							pst.close();
							o.setTitulo(t);
							o.setAutor(a);
							o.setCategoria(c);
							o.setQtdTotal(q);
							fp.obraModel.fireTableDataChanged();
							dispose() ;
						} catch (Exception ex) {
							JOptionPane.showMessageDialog(null, "Valor invalido em quantidade");
						}
					} else JOptionPane.showMessageDialog(null, "Digite um valor v�lido no campo autor");
				} else JOptionPane.showMessageDialog(null, "Digite um valor v�lido no campo titulo");
			}
		}) ;
	
		setVisible(true);
	}

	public int getLinha(){
		return linha ;
	}
}
